Computational Thinking

학부 수업에서 알고리즘에 대해 배울 때, 첫번째로 접하게 되는 개론 성격의 개념 중 하나가 바로 Computational Thinking입니다. 이 글에서는 Computational Thinking이라는 개념에 대해 알아봅니다.


컴퓨터의 입장에서 생각하기

Computational Thinking을 한마디로 정의하자면 컴퓨터 입장에서 생각하기다. 컴퓨터의 도움이 필요한 문제들이 있다. 수작업으로 다루기 힘든 어마어마한 규모의 자료가 필요한 문제이거나, 어떤 소프트웨어에 존재하는 버그를 해결해야 하는 상황일 수도 있다. 어떤 상황이 됐든 간에 컴퓨터를 이용해 문제를 해결해야 하는 상황에서는 컴퓨터, 그리고 그 컴퓨터에서 돌아가는 프로그램을 생각해야 한다. 그리고 주어진 문제를 해결할 답을 구현할 최적의 하드웨어와 소프트웨어에 대해 고민해야 한다.

어떤 문제가 주어졌을 때, Computational Thinking을 통해 문제를 해결하는 과정은 크게 세 단계로 나뉜다.

  1. Abstraction: 문제를 추상화하는 단계다. 컴퓨터에서 문제가 해결될 수 있도록 문제를 구현하기 위해 필요한 데이터를 자료구조로 구성한다.
  2. Automation: 문제를 해결할 방법을 구상하는 단계다. 어떤 일련의 과정을 컴퓨터가 반복하면 자동으로 문제가 해결되도록 하는 바로 그 과정, 알고리즘을 설계하고 작성한다.
  3. Analysis: 이전 단계에서 설정한 방법을 통해 문제를 해결해보고 (문제 해결 방법을 구현한 프로그램을 실행하고) 그 방법이 맞았는지, 그 방법이 얼마만큼의 연산 시간과 메모리를 필요로 하는지 계산하고 평가한다.

이 개념은 어디까지나 추상적인 방법론에 불과하다. 주어진 상황, 자료구조나 알고리즘의 작성 및 실행, 평가와 같은 구체적인 내용은 이 개념을 벗어나기에, 관련된 자료를 찾아보면 이해에 도움이 될 것이다.


참고 자료 & 더보기

참고 자료

더보기